package interseccioncircunf;

import java.util.regex.Matcher;

import java.util.regex.Pattern;

import javax.swing.JOptionPane;

public class Interseccion2Circunferencias {
	/**
	 * version 1.0
	 * @param args
	 * 
	 * ptos : es un String donde se ingresan los puntos de ambas circunsferencia y radios
	 * fraseSplit[] : es un arreglo que guarda los valores del String ptos, se divide por un split
	 * conv[] : es un Double donde se guardan los valores de fraseSplit 
	 * l : corresponde a x1 y se guardan el valor unitario de conv[0]
	 * m : corresponde a y1 y se guardan el valor unitario de conv[1]  
	 * n : corresponde a r1 y se guardan el valor unitario de conv[2]
	 * o : corresponde a x2 y se guardan el valor unitario de conv[3]
	 * p : corresponde a y2 y se guardan el valor unitario de conv[4]
	 * q : corresponde a r2 y se guardan el valor unitario de conv[5]
	 * n1 : (x2-x1)^2 -------es un Double que calcula parte de la distancia
	 * n2 : (y2-y1)^2 -------es un Double que calcula parte de la distancia
	 * distanciar : raiz(n1+n2)------es un double que calcula la distacia
	 * distancia : es un entero que guarda a distanciar y antes de guardarla la transforma de Double a int
	 * sumaradios : n+q suma los radios 
	 * ---- al final si la distancia es menor a la suma de los radios quiere 
	 * ---- decir que se intersectan ambas circunsferencia.
	 */
   public static void main(String []args ){
	   
	   
	  
	   boolean invalido=true;
	   boolean invalido2=true;
	   
	   String Cadena = ".*[a-z].*";
	  
	   String ptos="";
	   double conv[]=new double [6];
	   int distancia=0;
	   double distanciar=0;
	   int sumaradios=0;
	   int l=0;int m=0;int n=0;int o=0;int p=0;int q=0;
	  
       
	do{	
		do{
	   ptos= JOptionPane.showInputDialog("Ingrese los valores de la circunferencia \n segun el siguiente orden \n \n x1=  \n y1= \n r1= \n x2= \n  y2=  \n r2= \n ");
	   
	   Pattern pat = Pattern.compile(Cadena);
       Matcher mat = pat.matcher(ptos);
       
           if (mat.matches()) {
           invalido2=true;
           JOptionPane.showMessageDialog(null, "nose pueden ingresar letras ");
            } else {
          invalido2 = false; 
         
            }
	    } while (invalido2!=false);
       
       
		 String fraseSplit[]=ptos.split(" ");
		   
		   
		   for (int i=0;i<6;i++){
			conv[i]=Double.parseDouble(fraseSplit[i]);
			
	       }
		     

			   
			  if (conv[0]>=0 && conv[0]<=10000 && conv[1]>=0 && conv[1]<=10000 && conv[3]>=0 && conv[3]<=10000 && conv[4]>=0 && conv[4]<=10000 && conv[5]>=0 && conv[5]<=1000 && conv[2]>=0 && conv[2]<=1000){
				  
				  for(int i=0;i<6;i++){
					  l=(int)(conv[0]);//x1
					  m=(int)(conv[1]);//y1
					  n=(int)(conv[2]);//r1
					  o=(int)(conv[3]);//x2
					  p=(int)(conv[4]);//y2
					  q=(int)(conv[5]);//r2
				  }
				
				  double n1=Math.pow((o-l), 2);
				  double n2=Math.pow((p-m), 2);
				  
				  
				  distanciar=(Math.sqrt((n1+n2)));
				  distancia=(int)(distanciar);
				  sumaradios=(int)(n+q);
				
				  if (distancia<sumaradios){
					  System.out.println("SI");
				  }else{
					  System.out.println("NO");
				  }
				  
       
			  }
		
		
       
	  }while(invalido!=true || (conv[0]!=0 && conv[1]!=0 && conv[2]!=0 && conv[3]!=0 && conv[4]!=0 && conv[5]!=0 ));  
       
       
       
	   
   }
}
